A spreadsheet program is a computer application that displays multiple cells that together make up a grid consisting of rows and columns, called a spreadsheet. Each cell contains an alphanumeric value, a numeric value, or a formula. When cells are displayed, the alphanumeric value or numeric value of each cell is displayed. If, however, a cell contains a formula, then the value of that formula is calculated to generate an alphanumeric or numeric value that is then displayed for the cell. A formula may be defined in terms of mathematical operations (e.g., addition or multiplication), mathematical functions (e.g., net present value), and nonmathematical functions (e.g., a table lookup) that can be performed on various operands. The operands may include constant alphanumeric or numeric values or may include references to other cells. When a formula references another cell, then the value of the other cell is used as the operand. The other cell may itself contain an alphanumeric value, a numeric value, or a formula. If the other cell contains a formula, then that formula may have operands that reference yet other cells. Thus, the value of one cell may depend on the values of many other cells either directly (i.e., as operands of the formula that explicitly reference another cell) or indirectly (e.g., as operands of the formula of an explicitly referenced cell that itself contains a formula that references another cell). Whenever a value of a cell changes, the spreadsheet recalculates the value of any cell whose value depends directly or indirectly on the value of that cell.
Spreadsheet programs have become very popular, especially for financial analysis. A spreadsheet that supports sophisticated financial analyses can be very large and quite complex. It is not uncommon for spreadsheets to contain thousands of cells with very complex formulas and data dependencies. Because of the complexity and size of these spreadsheets, it can be difficult for the developer of a spreadsheet to ensure that the spreadsheet performs the desired calculations. Even simple typographical errors in a formula (e.g., AB256 rather than AB255) can result in subtle errors that are difficult to detect.
A developer of a spreadsheet may provide the spreadsheet to others, such as customers, so that they can use the spreadsheet to calculate values based on their own initial data. To do so, the developer would provide a file containing the spreadsheet that can be loaded using the spreadsheet program and initialized with data of the customer as appropriate. The spreadsheet program then calculates the values of the spreadsheet based on the data.
Tools can be provided to help a person (e.g., a developer or customer of a developer) ensure the correctness of a spreadsheet. As part of ensuring the correctness, the tools may point out potential problems to the user or may point out portions of the spreadsheet whose correctness has been verified. These tools could provide a static report of their results. For example, a tool may provide a user interface that lists cells by their identifier (e.g., “A1”) with suspect formulas. Some tools could even modify the spreadsheet to help highlight these problems. For example, a tool might change the background color of a suspect cell to red. Unfortunately, once a tool starts to modify a spreadsheet, it can be extremely difficult to determine whether the cause of a problem is the spreadsheet as provided by the developer or modification to the spreadsheet.